#include "ChangeZonaScene.h"
#include "MenuScene.h"

void ChangeZonaScene::Init(){
				
	changeView=sf::View(sf::FloatRect(0,0,12*16,10*16));
	theEngine.GetRenderWindow().SetView(changeView);
	//changeView=theEngine.GetRenderWindow().GetView();
	changeView.SetCenter(changeView.GetRect().Right/2.0f,changeView.GetRect().Bottom/2.0f);
	//---*Propiedades de la imagen de la puerta de fondo
	vx=180.0f;    
	const sf::Image &img = theTextureManager.GetTexture("../data/Sprites/changeZona.png");
	fondo.SetImage(img);	
	if(direccion==1){
		fondo.SetCenter(fondo.GetSize().x,fondo.GetSize().y/2.0f);
		pos = sf::Vector2f(theEngine.GetRenderWindow().GetView().GetRect().Left,theEngine.GetRenderWindow().GetView().GetRect().Bottom/2);
	}
	if(direccion==2){
		fondo.SetCenter(0.0f,fondo.GetSize().y/2.0f);
		pos = sf::Vector2f(changeView.GetRect().Right,changeView.GetRect().Bottom/2);
	}
	if(direccion==3){
		fondo.SetRotation(90.0f);
		fondo.SetCenter(fondo.GetSize().x/2.0f,fondo.GetSize().y/2.0f);
		pos = sf::Vector2f(theEngine.GetRenderWindow().GetView().GetRect().Right/2.0f,theEngine.GetRenderWindow().GetView().GetRect().Top);
	}
	if(direccion==4){
		fondo.SetRotation(90.0f);
		fondo.SetCenter(fondo.GetSize().x/2.0f,fondo.GetSize().y/2.0f);
		pos = sf::Vector2f(theEngine.GetRenderWindow().GetView().GetRect().Right/2.0f,theEngine.GetRenderWindow().GetView().GetRect().Bottom);
	}


	//fondo.SetCenter(img.GetWidth()/2.0, img.GetHeight()/2.0);
	//fondo.SetScale(1.5f,1.5f);
	fondo.SetPosition(pos);
	

    cout<<"ChangeZonaScene INICIADA"<<endl;
}


void ChangeZonaScene::Cleanup(){
	cout<<"ChangeZonaScene Eliminado"<<endl;
}

void ChangeZonaScene::ProcessEvent(const sf::Event &e){
	// si presionamos alguna tecla o boton del mouse, se vuelve a la escena anterior
	// si se presiona escape se vuelve al menu principal
	
}


void ChangeZonaScene::Update(const float &dt){
	
	if(direccion==1){
	if(fondo.GetPosition().x-fondo.GetSize().x +16.0f<changeView.GetRect().Right){	
	fondo.Move(vx*dt, 0.0f);
	}
	else{
	theEngine.GetRenderWindow().Clear();
	EndScene();
	}
	}
	else if(direccion==2){
	if(fondo.GetPosition().x+fondo.GetSize().x -16.0f>0.0f){
	fondo.Move(-1*vx*dt, 0.0f);
	}
	else{
	theEngine.GetRenderWindow().Clear();
	theEngine.GetRenderWindow().Display();
	EndScene();
	
	}
	}
	else if(direccion==3){
	if(fondo.GetPosition().y - fondo.GetSize().x/2.0f + 16.0f<changeView.GetRect().Bottom){
	fondo.Move(0.0f,vx*dt);
	}
	else{
	theEngine.GetRenderWindow().Clear();
	theEngine.GetRenderWindow().Display();
	EndScene();	
	}
	}
	else if(direccion==4){
    if(fondo.GetPosition().y +fondo.GetSize().x/2.0f - 16.0f>0.0f){
	fondo.Move(0.0f,-1*vx*dt);
	}
	else{
	theEngine.GetRenderWindow().Clear();
	theEngine.GetRenderWindow().Display();
	EndScene();
	
	}
	}


	
}


void ChangeZonaScene::Render(sf::RenderWindow &w){
	w.Clear(sf::Color::Black);
	w.Draw(fondo);
	
}

